Measurement systems consist of sensors which collect data about real world conditions, and measurement processing program logic (often referred to individually as function blocks, as, for example, used in the terminology of IEEE Standard 1451.1), which performs operations on these measurements. There may be multiple function blocks within a system, and each function block can perform a specific function such as thresholding or averaging. The functions, or operations, may be arithmetic or logical in nature. For instance, one may wish to compare a radio frequency (RF) signal measurement to a threshold, or average a number of temperature measurements together. Each of these individual processing operations would be performed by, and encompassed within, a function block.
Measurements are more than just numerical values, even though they are usually thought of, and treated as, simple numbers. Most of the time, however, they have additional attributes, called metadata, which contribute meaning to the measurement. For instance, a temperature measurement may have a value of 78, together with metadata that describes that the numerical value is represented in degrees Fahrenheit. Another piece of metadata associated with the temperature measurement may be uncertainty, which, for example, denotes that the value 78 has an uncertainty of plus or minus one degree.
In processing measurements it is necessary to take these metadata into consideration for the processing operations to be meaningful. Two numbers can always be added together. But it may not be a proper operation to add the numerical values for two measurements, depending on the nature of the measurements. The metadata can be used, for example, by the function blocks to determine whether or not an operation is permissible.
In current practice, the logic of whether or not a given operation is permissible is often embedded in the function block. That is, the measurement processing program is written expecting a certain type of measurement. This approach has the advantage of simplicity, but it has the drawback of being prone to error, especially in an environment where there may be different types of measurements (such as different measurement units) present in the system. For example, if the program logic is expecting to operate on measurements in Celsius, and a measurement based on Fahrenheit is introduced, the program will produce erroneous results.
Another common approach is to provide the measurement, with its numerical value and associated metadata, to the function block, and let the function block decide whether or not a certain operation is valid based on the metadata. For instance, if a function block received two measurements to be compared, it can check to see if the two measurements have the same unit, if the two values have the same scale properties, etc., before operating on the measurement. If the two measurements are not compatible, for instance one is Celsius and the other Fahrenheit, the measurements can be transformed appropriately before being processed. The disadvantage with this approach is that it is tedious. Having to make the appropriate background checks before every operation slows down the system.